package com.lollipop.programming.designpattern.strategy;

import java.math.BigDecimal;

/**
 * @Author Lollipop
 * @Version 1.0
 * @Date 2025/4/10 13:55
 * @Description 订单类-上下文模式-模拟订单支付（云闪付、支付宝、微信）
 * 上下文模式：在策略模式的基础上，增加了上下文环境，用于管理策略对象
 * 上下文环境：用于管理策略对象，提供一个接口，用于调用策略对象的方法
 * 上下文环境：用于管理策略对象，提供一个接口，用于调用策略对象的方法
 */
public class ContextOrder {
    /**
     * 订单号
     */
    private String orderNo;
    /**
     * 订单金额
     */
    private BigDecimal amount;
    /**
     * 支付状态
     */
    private boolean payStatus;


    public ContextOrder(String orderNo, BigDecimal amount) {
        this.orderNo = orderNo;
        this.amount = amount;
    }

    /**
     * 执行支付
     *
     * @return
     */
    public boolean processPayment(PaymentContext paymentContext) {
        return paymentContext.executePayment(amount);
    }
}
